package com.zjb.datastructure.string;

public class CustomMatch {


    public static int bm(char[] src, char[] tar) {

        int srcLen = src.length;
        int tarLen = tar.length;
//src 的下标
        int index = 0;
        while (index <= srcLen - tarLen) {
            //走了几步
            int step = 0;
            // src 的下标
            int j = 0;
            // tar 倒序开始比较
            int i = tarLen - 1;
            for (; i >= 0; i--) {
                // src的下标=index+tar的下标
                j = index + i;
                //如果不相等，比较剩余的字符，看看是否有相等的
                if (tar[i] != src[j]) {
                    //tar的下标左移一位，步长加1
                    step++;
                    for (int k = i - 1; k >= 0; k--) {
                        //如果相等则退出
                        if (tar[k] == src[j]) {
                            break;
                        }
                        //如果不等 步长加1 ，tar的下标左移一位
                        step++;
                    }
                    break;
                }
                //如果不等 步长加1 ，tar的下标左移一位
                step++;
            }
            if (i < 0) {
                return j;
            }
            // index =index + 走了几步
            index = index + step;
        }
        return -1;
    }

    public static void main(String[] args) {
        //char[] a = {'a', 'b', 'c', 'a', 'c', 'a','b', 'c','b', 'c','b','a', 'c','a','b','c'};
        char[] a = {'a', 'a', 'a', 'a', 'a', 'a','a'};
        //char[] b = {'c', 'f'};
        //char[] b = {'a', 'b', 'b','c','a','b','c'};
        //char[] b = {'c', 'b', 'a','c','a','b','c'};
        char[] b = { 'b', 'a','a','a'};

        System.out.println(bm(a, b));
        //System.out.println((int)'a');
    }

}
